package com.solo.system.service;

import cn.hutool.core.lang.tree.Tree;
import com.solo.common.core.base.service.BasicService;
import com.solo.system.api.entity.SysDept;

import java.util.List;
import java.util.Set;

/**
 * 部门Service
 * @author 十一
 * @since 2023/08/31 10:32
 * 人生若只如初见，何事秋风悲画扇
 **/
public interface SysDeptService extends BasicService<SysDept> {

    /**
     * 新增部门
     * @param entity 部门实体
     * @return 是否成功
     */
    boolean create(SysDept entity);

    /**
     * 删除部门
     * @param deptId 部门id
     * @return 是否成功
     */
    boolean delete(Long deptId);

    /**
     * 更新部门
     * @param entity 部门实体
     * @return 是否成功
     */
    boolean update(SysDept entity);

    /**
     * 查询全部部门树
     * @return 部门树
     */
    List<Tree<Long>> selectDeptTree();

    /**
     * 查询部门及子部门id集合
     * @param deptId 部门id
     * @param includeCurrentNode 是否包括当前节点
     * @return 子部门id集合（包括本部门）
     */
    Set<Long> selectChildDeptIds(Long deptId, boolean includeCurrentNode);

    /**
     * 刷新部门缓存
     */
    void refreshCache();

}
